webview.getSetting().setJavaScriptEnable(true);  
//把js绑定到全局的myjs上，myjs的作用域是全局的，初始化后可随处使用
//通过myjs在js中调用JSKit类中的方法
webView.addJavascriptInterface(new JSKit(), "myjs");
//调用 HTML 中的javaScript 函数
mWebView.loadUrl("javascript:showJsMsg()");

/**在android4.2以前，注入步骤如下：*/
class JSKit { 
	public void showAndroidMsg(String msg) {
		Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();
	}
 } 
/**Android4.2及以后，注入步骤如下：
 * 经过查官方文档所知，因为这个接口允许JavaScript 控制宿主应用程序，
 * 这是个很强大的特性，但同时，在4.2的版本前存在重大安全隐患，
 * 因为JavaScript 可以使用反射访问注入webview的java对象的public fields，
 * 在一个包含不信任内容的WebView中使用这个方法，会允许攻击者去篡改宿主应用程序，
 * 使用宿主应用程序的权限执行java代码。因此4.2以后，任何为JS暴露的接口，都需要加
 * @JavascriptInterface
 * */
class JSKit {  
	@JavascriptInterface
	public void showAndroidMsg(String msg) {
		Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();
	}
 } 

/*Html代码如下*/
<script>
   function showJsMsg(){
      alert("hello world!");
   }
   function showMsgInAndroid(){
      myjs.showAndroidMsg('hello in android!');
   }
</script>
<button id='btntest' onclick='showMsgInAndroid()'>调用android方法</button>
